// stdexcept standard header
#ifndef _STDEXCEPT_
#define _STDEXCEPT_
#include <exception>
#include <xstring>
_STD_BEGIN
#ifndef _Mbstinit

 #if defined(__cplusplus) && !defined(__CODEGEARC__) // non-initialized
#define _Mbstinit(x)	_Mbstatet x

 #else /* __cplusplus */
#define _Mbstinit(x)	_Mbstatet x = {0}
 #endif /* __cplusplus */

#endif /* _Mbstinit */

		// CLASS logic_error
class logic_error
	: public _XSTD exception
	{	// base of all logic-error exceptions
public:
	explicit logic_error(const string& _Message)
		: _Str(_Message)
		{	// construct from message string
		}

	explicit logic_error(const char *_Message)
		: _Str(_Message)
		{	// construct from message string
		}

	virtual ~logic_error() _NOEXCEPT
		{	// destroy the object
		}

	virtual const char *what() const _THROW0()
		{	// return pointer to message string
		return (_Str.c_str());
		}

private:
	string _Str;	// the stored message string

 #if _HAS_EXCEPTIONS

 #else /* _HAS_EXCEPTIONS */
protected:
	virtual void _Doraise() const
		{	// perform class-specific exception handling
		_RAISE(*this);
		}
 #endif /* _HAS_EXCEPTIONS */
	};

		// CLASS domain_error
class domain_error
	: public logic_error
	{	// base of all domain-error exceptions
public:
	typedef logic_error _Mybase;

	explicit domain_error(const string& _Message)
		: _Mybase(_Message.c_str())
		{	// construct from message string
		}

	explicit domain_error(const char *_Message)
		: _Mybase(_Message)
		{	// construct from message string
		}

 #if _HAS_EXCEPTIONS

 #else /* _HAS_EXCEPTIONS */
protected:
	virtual void _Doraise() const
		{	// perform class-specific exception handling
		_RAISE(*this);
		}
 #endif /* _HAS_EXCEPTIONS */
	};

		// CLASS invalid_argument
class invalid_argument
	: public logic_error
	{	// base of all invalid-argument exceptions
public:
	typedef logic_error _Mybase;

	explicit invalid_argument(const string& _Message)
		: _Mybase(_Message.c_str())
		{	// construct from message string
		}

	explicit invalid_argument(const char *_Message)
		: _Mybase(_Message)
		{	// construct from message string
		}

 #if _HAS_EXCEPTIONS

 #else /* _HAS_EXCEPTIONS */
protected:
	virtual void _Doraise() const
		{	// perform class-specific exception handling
		_RAISE(*this);
		}
 #endif /* _HAS_EXCEPTIONS */
	};

		// CLASS length_error
class length_error
	: public logic_error
	{	// base of all length-error exceptions
public:
	typedef logic_error _Mybase;

	explicit length_error(const string& _Message)
		: _Mybase(_Message.c_str())
		{	// construct from message string
		}

	explicit length_error(const char *_Message)
		: _Mybase(_Message)
		{	// construct from message string
		}

 #if _HAS_EXCEPTIONS

 #else /* _HAS_EXCEPTIONS */
protected:
	virtual void _Doraise() const
		{	// perform class-specific exception handling
		_RAISE(*this);
		}
 #endif /* _HAS_EXCEPTIONS */
	};

		// CLASS out_of_range
class out_of_range
	: public logic_error
	{	// base of all out-of-range exceptions
public:
	typedef logic_error _Mybase;

	explicit out_of_range(const string& _Message)
		: _Mybase(_Message.c_str())
		{	// construct from message string
		}

	explicit out_of_range(const char *_Message)
		: _Mybase(_Message)
		{	// construct from message string
		}

 #if _HAS_EXCEPTIONS

 #else /* _HAS_EXCEPTIONS */
protected:
	virtual void _Doraise() const
		{	// perform class-specific exception handling
		_RAISE(*this);
		}
 #endif /* _HAS_EXCEPTIONS */
	};

		// CLASS runtime_error
class runtime_error
	: public _XSTD exception
	{	// base of all runtime-error exceptions
public:
	explicit runtime_error(const string& _Message)
		: _Str(_Message)
		{	// construct from message string
		}

	explicit runtime_error(const char *_Message)
		: _Str(_Message)
		{	// construct from message string
		}

	virtual ~runtime_error() _NOEXCEPT
		{	// destroy the object
		}

	virtual const char *what() const _THROW0()
		{	// return pointer to message string
		return (_Str.c_str());
		}

private:
	string _Str;	// the stored message string

 #if _HAS_EXCEPTIONS

 #else /* _HAS_EXCEPTIONS */
protected:
	virtual void _Doraise() const
		{	// perform class-specific exception handling
		_RAISE(*this);
		}
 #endif /* _HAS_EXCEPTIONS */
	};

		// CLASS overflow_error
class overflow_error
	: public runtime_error
	{	// base of all overflow-error exceptions
public:
	typedef runtime_error _Mybase;

	explicit overflow_error(const string& _Message)
		: _Mybase(_Message.c_str())
		{	// construct from message string
		}

	explicit overflow_error(const char *_Message)
		: _Mybase(_Message)
		{	// construct from message string
		}

 #if _HAS_EXCEPTIONS

 #else /* _HAS_EXCEPTIONS */
protected:
	virtual void _Doraise() const
		{	// perform class-specific exception handling
		_RAISE(*this);
		}
 #endif /* _HAS_EXCEPTIONS */
	};

		// CLASS underflow_error
class underflow_error
	: public runtime_error
	{	// base of all underflow-error exceptions
public:
	typedef runtime_error _Mybase;

	explicit underflow_error(const string& _Message)
		: _Mybase(_Message.c_str())
		{	// construct from message string
		}

	explicit underflow_error(const char *_Message)
		: _Mybase(_Message)
		{	// construct from message string
		}

 #if _HAS_EXCEPTIONS

 #else /* _HAS_EXCEPTIONS */
protected:
	virtual void _Doraise() const
		{	// perform class-specific exception handling
		_RAISE(*this);
		}
 #endif /* _HAS_EXCEPTIONS */
	};

		// CLASS range_error
class range_error
	: public runtime_error
	{	// base of all range-error exceptions
public:
	typedef runtime_error _Mybase;

	explicit range_error(const string& _Message)
		: _Mybase(_Message.c_str())
		{	// construct from message string
		}

	explicit range_error(const char *_Message)
		: _Mybase(_Message)
		{	// construct from message string
		}

 #if _HAS_EXCEPTIONS

 #else /* _HAS_EXCEPTIONS */
protected:
	virtual void _Doraise() const
		{	// perform class-specific exception handling
		_RAISE(*this);
		}
 #endif /* _HAS_EXCEPTIONS */
	};
_STD_END
#endif /* _STDEXCEPT_ */

/*
 * Copyright (c) by P.J. Plauger. All rights reserved.
 * Consult your license regarding permissions and restrictions.
V6.50:1422 */
